package models;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;

import play.db.jpa.Model;

@Entity
public class Equipe extends Model {
	@ManyToOne(optional = false)
	private Regional regional;

	@OneToMany(mappedBy="equipe")
	private Set<Processo> processos = new HashSet<Processo>();
	@OneToMany(mappedBy="equipe")
	private Set<AcessoEspecifico> acessos = new HashSet<AcessoEspecifico>();

	@ManyToMany(cascade = CascadeType.ALL)
	@JoinTable(name = "Equipe_Pessoa", 
			joinColumns = @JoinColumn(name = "equipe_id"), 
			inverseJoinColumns = @JoinColumn(name = "pessoa_id"))
	private Set<Membro> membros = new HashSet<Membro>();

	@Column(nullable = false)
	private String nome;

	public Set<Processo> getProcessos() {
		return processos;
	}

	public void setProcessos(Set<Processo> processos) {
		this.processos = processos;
	}

	public Set<Membro> getMembros() {
		return membros;
	}

	public void addMembro(Membro membro) {
		if (membro != null) {
			this.membros.add(membro);
		}
	}

	public Set<AcessoEspecifico> getAcessos() {
		return acessos;
	}

	public void setAcessos(Set<AcessoEspecifico> acessos) {
		this.acessos = acessos;
	}

	public Regional getRegional() {
		return regional;
	}

	public void setRegional(Regional regional) {
		this.regional = regional;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public void addAcessoEspecifico(AcessoEspecifico ae) {
		if (ae != null) {
			this.acessos.add(ae);
			ae.setEquipe(this);
		}
	}
}
